#include<iostream>
using namespace std;
#include<unordered_map>
#include<unordered_set>
#include<vector>

class Graph;
class Node;
class Edge;

class Graph
{
public:
    unordered_map<int,Node> nodes; //点集 <编号,点>
    unordered_set<Edge> edges; //边集 <边>
};

class Node
{
public:
    int value; //点的名字 可以更换类型 比如改成string 可以代表 "北京"
    int in; //入度
    int out; //出度
    vector<Node> nexts; //当前点的直接邻居 当前点发散的
    vector<Edge> edges; //属于当前点的边
public:
    Node() {
        
    }
    Node(int value) {
        this->value = value;
        this->in = 0;
        this->out = 0;
    }
};

class Edge
{
public:
    int weight; //权值
    Node from; //源
    Node to; //目的
public:
    Edge(int weight,Node from,Node to) {
        this->weight = weight;
        this->from = from;
        this->to = to;
    }
};



int main() {

}